package com.shangxia.spr.Service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.shangxia.spr.Service.AttributeService;
import com.shangxia.spr.Service.InitAttributeVoService;
import com.shangxia.spr.enums.AttributeCategoryEnum;
import com.shangxia.spr.frame.AttributeI;
import com.shangxia.spr.mapper.dao.Attribute;
import com.shangxia.spr.po.vo.BaseAttributeVO;
import com.shangxia.spr.po.vo.PanelAttributeVO;
import com.shangxia.spr.po.vo.QualificationVO;
import com.shangxia.spr.po.vo.WarTimeAttributeVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * @author zhouya38158
 * @date 2021/11/18 15:04
 * @apiNote
 */
@Slf4j
@Service("initAttributeVoService")
public class InitAttributeVoServiceImpl implements InitAttributeVoService {

    @Autowired
    private AttributeService attributeService;

    /**
     * @param attributeVO       属性VO
     * @param npcCode           角色code
     * @param attributeCategoryEnum 属性大类
     */
    public void initAttributeVo(AttributeI attributeVO, Integer npcCode, AttributeCategoryEnum attributeCategoryEnum) {
        if (attributeVO instanceof QualificationVO) {
            return;
        }
        if (attributeVO instanceof BaseAttributeVO) {
            QueryWrapper<Attribute> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("attributeEnum", attributeCategoryEnum);
            queryWrapper.eq("npcCode", npcCode);
            List<Attribute> list = attributeService.list(queryWrapper);
            list.stream().peek(attribute -> attributeVO.putField(attribute, attribute.getAttributeType())).close();
            return;
        }
        if (attributeVO instanceof PanelAttributeVO) {
            return;
        }
        if (attributeVO instanceof WarTimeAttributeVO) {

        }
    }


}
